package br.com.lacibMusic.bean;

import br.com.lacibMusic.entidades.Album;
import br.com.lacibMusic.entidades.Disco;
import br.com.lacibMusic.rn.DiscoRN;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class DiscoBean implements Serializable {

    private DiscoRN discoRN = new DiscoRN();
    private Disco disco = new Disco();
    private List<Disco> discos;
    private Album album;

    private boolean renderLista;

    public String getTitulo() {
        iniciarBean();

        return "Cadastro - Disco";
    }

    public void iniciarBean() {
        discos = discoRN.obterTodos();
        renderLista = true;
    }
    public DiscoBean() {
    }

    public Album getAlbum() {
        return album;
    }

    public void setAlbum(Album album) {
        this.album = album;
    }

    public Disco getDisco() {
        return disco;
    }

    public void setDisco(Disco disco) {
        this.disco = disco;
    }

    public DiscoRN getDiscoRN() {
        return discoRN;
    }

    public void setDiscoRN(DiscoRN discoRN) {
        this.discoRN = discoRN;
    }

    public List<Disco> getDiscos() {
        discos = null;
        if (discos == null) {
            discos = discoRN.obterPorAlbum(album);
        }
        return discos;
    }

    public void setDiscos(List<Disco> discos) {
        this.discos = discos;
    }

    public String irCadastroDisco() {
        return "/discos/cadastroDisco.xhtml";
    }

    public String irMusicas() {
        return "/musica/listarMusica.xhtml";
    }

    public String irExcluir(){
        return "/discos/excluir.xhtml";
    }
    
    public String cancelar(){
        return "/discos/listarDisco.xhtml";
    }

    public  void salvar() {
        disco.setAlbumid(album);
        if (!discoRN.obterPorNome(disco.getNomeDisco()).isEmpty()) {
            BeanUtil.criarMensagemDeErro("Erro ao salvar", "Verifique se já não existe disco cadastrado com este nome.");
        } else {
            if (discoRN.salvar(disco)) {
                BeanUtil.criarMensagemDeInformacao("Operação Realizada com Sucesso", "Disco Salvo na Lista");
            } else {
                BeanUtil.criarMensagemDeErro("Erro ao salvar", "O Disco não pode ser salvo.");
            }
        }
        disco = null;
    }

    public void voltar() {
        disco = null;
        renderLista = true;
    }

     public void novo() {
        if (disco == null) {
            disco = discoRN.novo();
        }
        renderLista = false;
    }
    
    
    public String excluir() {
        if (discoRN.remover(disco)) {
            BeanUtil.criarMensagemDeInformacao("Disco Removido com sucesso.", "Disco: " + disco.getNomeDisco());
        } else {
            BeanUtil.criarMensagemDeErro("Erro ao remover Disco.", "O Disco não pode ser removido.");
        }
        disco = new Disco();
        return "/discos/listarDisco.xhtml";
    }

    public boolean isRenderLista() {
        return renderLista;
    }

    public void setRenderLista(boolean renderLista) {
        this.renderLista = renderLista;
    }
}
